package algoritmos;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import beans.Cliente;
import beans.Concessionaria;


public class MergeJoin extends Join {

	public MergeJoin(List<Cliente> clientes, List<Concessionaria> concessionaria) {
		super(clientes, concessionaria);
	}
	
	@Override
	public String[][] orderna() {
		List<List<String>> matriz_final = new ArrayList<List<String>>();
		List<String> l;
		int cont = concessionaria.size();
		
		//Ordena fisicamente as tabelas...
		Collections.sort(this.clientes);
		Collections.sort(this.concessionaria);
		
		for(Cliente c:this.clientes){
			for(Concessionaria co:this.concessionaria){
				if(c.getCod() == co.getCodCliente() && cont>0){
					//Inclui ao resultado
					l = c.getSerializedData();
					l.addAll(co.getSerializedData());
					matriz_final.add(l);
					cont--;
				}
			}
		}
		
		return parseToMatrix(matriz_final);
	}
}
